#pragma once
#include "Sq_BinaryTree.h"

typedef struct BiTNode{
	char data;
	struct BiTNode *lchild, *rchild;
}BiTNode, *BiTree;

typedef struct {
	BiTree* base;
	int front;
	int rear;
}Sq_Quene;

Status Init_Sq_Quene(Sq_Quene& Q);

Status Sq_Quene_Length(Sq_Quene& Q);

Status En_Sq_Quene(Sq_Quene& Q, BiTree e);

Status De_Sq_Quene(Sq_Quene& Q, BiTree& e);

BiTree Get_Head_Sq_Quene(Sq_Quene Q);

void InOrderTraverse(BiTree T);

void PreOrderTraverse(BiTree T);

void PostOrderTraverse(BiTree T);

void LayerOrderTraverse(BiTree T);

void CreateBiTree(BiTree& T);

void Copy(BiTree T, BiTree& NewT);

int Depth(BiTree T);

int NodeCount(BiTree T);

int CountLeaves(BiTree T);

void NonRecursiveInOrderTraverse(BiTree T);